package codegen;

import java.util.ArrayList;
import java.util.List;

/**
 * Da die Symbole der Prozedur lediglich von der Prozedur selbst genutzt werden und
 * deren Unterprozeduren, muss die Symboltabelle nicht in einer Instanzvariablen
 * gehalten werden, und kann nach dem Kompilieren der Statements wieder abgeräumt
 * werden...
 */
public class ProcedureDescr extends AbstractDescr {

    private static final long serialVersionUID = 1L;
    private String name;
    private int start;
    private List<ParamDescr> params;

    public ProcedureDescr(String identifier, int startLabel, List<ParamDescr> params) {
        super(0);
        name = identifier;
        start = startLabel;
        this.params = params;
    }

    public String getName() {
        return name;
    }
    
    public int getStart() {
        return start;
    }

    public List<ParamDescr> getParams() {
        return params;
    }

	@Override
	public int getSize() {
		int size = 0;
		for (ParamDescr param : params)
			size += param.getSize();
		return size;
	}
	

    public void print() {
        int i = 0;
        trace("");
        for (i = 0; i < params.size(); i++) {
            params.get(i).print();
        }
        unindent();
    }
}
